package com.pair.micro.fee.modules.charge.vo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fhs.core.trans.vo.TransPojo;
import com.pair.micro.common.utils.DateUtils;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Data
@Schema(description = "收取费用")
public class ChargeProjectVO implements Serializable, TransPojo {
    private static final long serialVersionUID = 1L;

    @Schema(description = "id")
    private String id;

    @Schema(description = "收费设置id", required = true)
    @NotBlank(message = "收费设置id不能为空")
    private String configId;

    @Schema(description = "小区id", required = true)
    @NotNull(message = "小区id不能为空")
    private Integer gardenId;

    @Schema(description = "楼栋id", required = true)
    private Integer houseId;

    @Schema(description = "单元id", required = true)
    private Integer unitId;

    @Schema(description = "房屋id", required = true)
    private Integer roomId;

    @Schema(description = "建账时间")
    @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
    private Date beginTime;

    @Schema(description = "开始时间")
    @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
    private Date startTime;

    @Schema(description = "截止时间")
    @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
    private Date endTime;

    @Schema(description = "应收金额")
    private BigDecimal revAmount;

    @Schema(description = "收费状态 20242001:收费中状态 、20242002 当期收费结束、20242003 收费结束", required = true)
    private String chargeState;

    @Schema(description = "项目类型", required = true)
    @NotBlank(message = "项目类型不能为空")
    private String projectType;

    @Schema(description = "车位id", required = true)
    private Integer carPlaceId;


    @Schema(description = "创建时间")
    @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
    private Date createTime;

    @NotBlank(message = "收费范围不能为空")
    @Schema(description = "收费范围")
    private String chargeRange;

    @Schema(description = "操作人")
    private Integer operator;

    @Schema(description = "收费设置对象")
    private ChargeConfigVO configVO;


    @Schema(description = "收费项名称")
    private String configName;
    @Schema(description = "收费项标识")
    private String chargeMark;










    @Schema(description = "收费账单集合")
    private List<ChargeReceiveVO> receiveVO;

    @Schema(description = "使用面积")
    private Float area;

    @Schema(description = "应收金额")
    private BigDecimal projectReceiveAmount;

    @Schema(description = "实收金额")
    private BigDecimal projectPaidAmount;


    @Schema(description = "临时开始时间")
    @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
    private Date startCasualTime;

    @Schema(description = "临时截止时间")
    @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
    private Date endCasualTime;

    @Schema(description = "收据单号")
    private String receiptNumber;

    @Schema(description = "收费方式")
    private String chargeMethod;


}
